package es.deusto.herotactics.ingameandroid;

import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import es.deusto.herotactics.utils.Game;

/**
 * Es una barra que se dibujará en la parte superior de la pantalla durante la partida
 * para mostrar en ella infomación de la partida y tal vez acciones como acabar turno etc.
 * 
 * @author Ibai
 *
 */
public class Barra {
	private int tamanyo;
	private int colorFondo; //TODO colore rojo/azul según raza, no jugador
	private String jugadorTurno;
	private Integer ptosAccion;
	private PantallaAndroid origen;
	private final String textoTurno = "Turno de ";
	private final String textoPuntos = "Puntos de acción restantes: ";
	
	/**
	 * Constructor de la barra superior que se muestra en la barra
	 * 
	 * @param origen gestor de pantalla en el que se estña mostrando la barra
	 * @param tamanyo tamaño de la barra
	 */
	public Barra(PantallaAndroid origen, int tamanyo) {
		super();
		this.tamanyo = tamanyo;
		this.origen = origen;
		colorFondo = Color.GREEN;
	}
	
	/**
	 * devuelve el tamaño de la barra
	 * 
	 * @return tamaño de la barra
	 */
	public int getTamanyo() {
		return tamanyo;
	}
	
	/**
	 * Fija el tamaño de la barra
	 * 
	 * @param tamanyo nuevo tamaño de la barra
	 */
	public void setTamanyo(int tamanyo) {
		this.tamanyo = tamanyo;
	}
	
	/**
	 * Fija el color de fondo de la barra
	 * 
	 * @param colorFondo int que representa el color de fondo
	 */
	public void setColorFondo(int colorFondo) {
		this.colorFondo = colorFondo;
	}
	
	/**
	 * Fija el jugador que tiene el turno actualmente para mostrarlo
	 * 
	 * @param jugadorTurno jugador con el turno
	 */
	public void setJugadorTurno(String jugadorTurno) {
		this.jugadorTurno = jugadorTurno;
		ptosAccion = origen.getPartida().getTurno().getPuntosAccion();
	}
	
	/**
	 * Fija los puntos de acción restantes
	 * 
	 * @param ptosAccion Puntos de acción restantes
	 */
	public void setPtosAccion(int ptosAccion) {
		this.ptosAccion = ptosAccion;
	}
	
	/**
	 * Devuelve los puntos de acción restantes
	 * 
	 * @return puntos de acción restantes
	 */
	public int getPtosAccion() {
		return ptosAccion;
	}
	
	/**
	 * Dibuja la barra en la pantalla
	 * 
	 * @param canvas Canvas en el que hay que dibujar la barra
	 * @param width Ancho de la pantalla
	 * @param paint Estética del dibujado
	 */
	public void draw(Canvas canvas, int width, Paint paint) {
		paint.setColor(colorFondo);
		canvas.drawRect(0, 0, width, tamanyo, paint);
		if (colorFondo == Color.WHITE)
			paint.setColor(Color.BLACK);
		else if (colorFondo == Color.BLACK)
			paint.setColor(Color.WHITE);
		paint.setTextSize(14);
		canvas.drawText(textoTurno+jugadorTurno, 3, tamanyo/2-3, paint);
		canvas.drawText(textoPuntos+ptosAccion.toString(), 3, tamanyo/2+15, paint);
		canvas.drawLine(0, tamanyo, width, tamanyo, paint);
	}
	
	/**
	 * Se llamará a este método cuando se toque la barra
	 * 
	 * @param oriegn Desde donde se ha pulsado la barra
	 * @param x Coordenada x en la que se ha pulsado la barra
	 * @param y Cooredenada y en la que se ha pulsado la barra
	 */
	public void touch(float x, float y) {
		//TODO falta por implementar lo que se vaya a poner aqui
		Game.menuPartida(origen);
	}
}
